package cn.teduo;

import java.lang.reflect.Constructor;

//测试反射 创建程序的入口函数不用！！
public class dou28d {
    public static void main(String[] args) throws Exception {
        getClazz();
    }
    public static void getClazz() throws Exception {
        //方式1 通过包+路径+类名 获取字节码对象
       Class<?> student1 =  Class.forName("cn.teduo.dou28");
       //方式2 直接类名.class获取对应的字节码对象
       Class<?> s2 = dou28.class;
       //方式3 通过类的对象来获取
        Class<?> s3 = new dou28().getClass();
        System.out.println(student1);
        System.out.println(s2);
        System.out.println(s3);
        Object obj = s2.newInstance(); //获取无参构造
        System.out.println(obj);
        Constructor<?> c = s2.getConstructor(int.class,String.class);
        Object o = c.newInstance(18,"张三"); //多态向上造型
        System.out.println(o);
        dou28 d = (dou28) o ;
        System.out.println(d.age);
        d.study();
    }
}
